package com.atguigu.jvm1205;

/**
 * @author gcq
 * @Create 2020-12-02
 * 主题：JVM
 *
 * 1、JVM系统架构图
 *
 * 2、类加载器
 *  System.out.println(myObject.getClass().getClassLoader().getParent().getParent()); // 启动类加载器 BootstrapClass
 *  System.out.println(myObject.getClass().getClassLoader().getParent()); // 扩展类加载器 Extension
 *  System.out.println(myObject.getClass().getClassLoader()); // 应用程序加载器 AppClassLoader
 *      2.1 有哪几种类加载器
 *      2.2 双亲委派
 *      2.3 沙箱安全机制
 *
 * 3、Native
 *      3.1 native 是一个关键字
 *      3.2 声明有 实现无 why?
 * 4、PC寄存器
 *      4.1 记录了方法之间的调用和执行情况，类似排版值日表
 *      用来存储向 下一条指令的地址，也即要执行的指令代码
 *      他是当前线程所执行的字节码的行号指示器
 *
 * 5、方法区
 *      5.1 他存储了每一个类的结构信息
 *      5.2方法区是规范，在不同的虚拟机里头实现是不一样的，最典型的就是永久代(PermGen space)和元空间(Metaspace)
 *      空调 k1 = new 格力();
 *      List list = new ArrayList();
 *      方法区 f = new 永久代
 *      方法去 f2 = new 元空间
 * 6、stack
 *      6.1 栈管运行，堆管储存
 *      6.2 栈保存哪些东西？
 *          8中基本数据类型+对象的引用变量 + 实例方法都是在函数的栈内存中分配
 *      6.3 Exception in thread "main" java.lang.StackOverflowError
 * 7、heap
 *
 * 8、heap--->对象的生命周期---->OOM
 */
public class JVMNote {
    public static void m1() {
        m1();
    }
    public static void main(String[] args) {
        System.out.println("1111");
        m1();
        System.out.println("4444");
    }


}